HEX
Server: Apache/2.4.58 (Ubuntu)
System: Linux ip-172-26-0-120 6.17.0-1009-aws #9~24.04.2-Ubuntu SMP Fri Mar 6 23:50:29 UTC 2026 x86_64
User: ubuntu (1000)
PHP: 8.3.6
Disabled: NONE
Upload Files
File: /var/www/html/dashboard.orbiwheels.com/vendor/cuyz/valinor/src/Definition/Methods.php
<?php

declare(strict_types=1);

namespace CuyZ\Valinor\Definition;

use Countable;
use IteratorAggregate;
use Traversable;

/**
 * @internal
 *
 * @implements IteratorAggregate<string, MethodDefinition>
 */
final class Methods implements IteratorAggregate, Countable
{
    /** @var MethodDefinition[] */
    private array $methods = [];

    public function __construct(MethodDefinition ...$methods)
    {
        foreach ($methods as $method) {
            $this->methods[$method->name] = $method;
        }
    }

    public function has(string $name): bool
    {
        return isset($this->methods[$name]);
    }

    public function get(string $name): MethodDefinition
    {
        return $this->methods[$name];
    }

    public function hasConstructor(): bool
    {
        return $this->has('__construct');
    }

    public function constructor(): MethodDefinition
    {
        return $this->get('__construct');
    }

    public function count(): int
    {
        return count($this->methods);
    }

    /**
     * @return Traversable<string, MethodDefinition>
     */
    public function getIterator(): Traversable
    {
        yield from $this->methods;
    }
}